Understanding the way in which software users use software can be very valuable when working to improve the effectiveness and ease of use of software applications. Traditional ways to analyze software users include usability studies, user interviews, user surveys and the like.
Various data can be collected during actual software usage to obtain information related to how users use and otherwise interact with a software program. However, analyzing that data to obtain useful information is a difficult problem.
Moreover, contemporary software is getting more and more sophisticated as advanced features are introduced. However, traditional usability studies only provide knowledge about feature usage that was obtained in artificial environments, which is not sufficient to understand software feature usage in real world applications.